/*
 * Copyright 2013-2025 chronicle.software; SPDX-License-Identifier: Apache-2.0
 */
package net.openhft.hashing;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.ArrayList;
import java.util.Collection;

@RunWith(Parameterized.class)
public class WyHashTest {
    @Parameterized.Parameters
    public static Collection<Object[]> data() {
        ArrayList<Object[]> data = new ArrayList<Object[]>();
        for (int len = 0; len < 1025; len++) {
            data.add(new Object[]{len});
        }
        return data;
    }

    @Parameterized.Parameter
    public int len;

    @Test
    public void testWyHashWithoutSeeds() {
        test(LongHashFunction.wy_3(), HASHES_OF_LOOPING_BYTES_WITHOUT_SEED);
    }

    @Test
    public void testWyHasWithOneSeed() {
        test(LongHashFunction.wy_3(42L), HASHES_OF_LOOPING_BYTES_WITH_SEED_42);
    }

    private void test(LongHashFunction wyHash, long[] hashesOfLoopingBytes) {
        byte[] data = new byte[len];
        for (int j = 0; j < data.length; j++) {
            data[j] = (byte) j;
        }
        LongHashFunctionTest .test(wyHash, data, hashesOfLoopingBytes[len]);
    }

    /**
     * Test data is output of the following program with wyhash implementation
     * from https://github.com/wangyi-fudan/wyhash
     * <pre>
     * #include &lt;iostream&gt;
     * #include "wyhash.h"
     *
     * int main() {
     *     char *src = (char *) malloc(1024);
     *     const int N = 1024;
     *     for (int i = 0; i < N; i++) {
     *         src[i] = (char) i;
     *     }
     *
     *     printf("without seed\n");
     *     for (int i = 0; i <= N; i++) {
     *         printf("%lldL,\n", (long long) wyhash(src, i, 0));
     *     }
     *
     *     printf("with seed 42\n");
     *     for (int i = 0; i <= N; i++) {
     *         printf("%lldL,\n", (long long) wyhash(src, i, 42));
     *     }
     *     return 0;
     * }
     * <\pre>
     */
    private static final long[] HASHES_OF_LOOPING_BYTES_WITHOUT_SEED = {
        0L,
        -1498634010482895780L,
        6867524088326895660L,
        269206059098007870L,
        -4886887581681798391L,
        3928433339794945779L,
        4316332308770427980L,
        2615655046588972881L,
        1900500844844731087L,
        -937305021312369991L,
        -8876585030919011822L,
        -8568794208905766378L,
        -7560937143015008723L,
        8498693544545256400L,
        -2419449035530425220L,
        3329598615825088111L,
        1210853880152044769L,
        8924597104910535362L,
        -3295737048979845383L,
        -2077067637562286605L,
        -1011034785208955521L,
        -7140824109018505684L,
        1461819519553440317L,
        6436392319919688449L,
        9118839121464630705L,
        -2917786468093466294L,
        504959295268162643L,
        6865609001872362604L,
        1331148763751586565L,
        5194938495997054762L,
        2665520052525504553L,
        276933320889118143L,
        4905118367340856460L,
        2074482748007873417L,
        33988220393155982L,
        -1886632289327107396L,
        1961403923654424835L,
        -2534868615627330587L,
        3462266467782463357L,
        7919120157912374187L,
        -89126594710480197L,
        -7042017916137112880L,
        -7849604837443256405L,
        7183458575501572456L,
        5774439312980039315L,
        -6565296715949686971L,
        8732951222530004068L,
        1900291206658974389L,
        7866927889483112715L,
        7328496947698938651L,
        -8414002129273563525L,
        -7507611883654277681L,
        1048916663450809742L,
        2886294206178088467L,
        -8219721567024751529L,
        7725050882468238784L,
        3754847308658349557L,
        -8413245846548203550L,
        -3076479495605594465L,
        -3121134529382168760L,
        -8550177436169846333L,
        -7635987039377529922L,
        -5313723440094816160L,
        -4177524123888580462L,
        -1094315098609866806L,
        6577764665351221181L,
        -7451684539960092493L,
        7061343558406187853L,
        871230336086645006L,
        6267395254690800101L,
        3141612453381470612L,
        -8952205469861911532L,
        4767899395611465842L,
        7630515440353450329L,
        -4985889236947520435L,
        4353614766406020339L,
        6903511086527962847L,
        -4820634093847096378L,
        6452963341373240239L,
        8594720565063264398L,
        -299303866433612643L,
        5948128939845193681L,
        -6327319179549631842L,
        1661386658896970098L,
        -387220913420000811L,
        -9142963141159743830L,
        -3957881162477548163L,
        7835579812652104509L,
        -2179101728939025569L,
        1409259865195553628L,
        3329985067144149794L,
        -4622006820323901246L,
        -5489854929168527846L,
        -4192684064311628792L,
        -5930581590656743655L,
        -8741322520672067800L,
        -2532269067473596306L,
        2794660858881925622L,
        -1660759460598522315L,
        4890293817527089205L,
        5011673154728255657L,
        -2422404023490478452L,
        -5823317675052947328L,
        -1972153552478886407L,
        855875383009846790L,
        4539038924804919368L,
        -3429781972296775524L,
        -933120655172824074L,
        5340485644774899680L,
        1224352437979479512L,
        -4247440279147522491L,
        -2847066616858361472L,
        7303140713793758036L,
        177699726658531463L,
        7295117342573216781L,
        -4960156472424071480L,
        8110395551125556627L,
        4814552517606903675L,
        -5765636104388650769L,
        -6413724172541333072L,
        8304733428601507939L,
        143869199545215598L,
        -3363348007324106812L,
        778524423687782971L,
        -3153748338449493859L,
        4072736150578731467L,
        2759867216020429817L,
        2328407206204809068L,
        3183594959296292673L,
        4716260652336579034L,
        -2306094442378564227L,
        1612703725746980307L,
        9169273487926974528L,
        1221567220993136926L,
        -1580158544177522978L,
        -7978689145799920414L,
        -8935536723451615449L,
        -5386522443941349619L,
        -2260007907190275450L,
        -6109689112492865066L,
        -7269857258080875354L,
        120767029125806560L,
        8179378742614718442L,
        -1054596932535254740L,
        -4819959080878920419L,
        6750654725339344085L,
        839742699455186248L,
        6590957420819328903L,
        -8962195670723273636L,
        2970575532853857622L,
        -2914121199343336253L,
        -4719180678962776867L,
        -3866803542764213986L,
        7340712279894103874L,
        665981095963825401L,
        -7610703223561970702L,
        -2285269148746390312L,
        -7903336846335812333L,
        7602163920871488336L,
        -2475707530835373762L,
        6488428233646685175L,
        781770467078860396L,
        -1896921154761119070L,
        3650082028082002274L,
        1859676323486474137L,
        -9056242232568275385L,
        -1916274702525507105L,
        -3359763315783254668L,
        -6899438582509090070L,
        -7391229595698815015L,
        7793799255007638001L,
        -4654796168571058118L,
        -9069457371238954514L,
        -9079499580790007240L,
        -2167538533996933224L,
        -5375580275118212442L,
        1932479471587420530L,
        463274931357170593L,
        -3434738247190694006L,
        8225681262889934868L,
        670972606916628978L,
        -7016577201793262587L,
        9186141629236930525L,
        -7494961908382494386L,
        6018069173542321620L,
        3178094810629815034L,
        4206446522733994268L,
        -6087839594407260931L,
        3028792124204271051L,
        -5992000926787926144L,
        -6045285586180402268L,
        -2566939030601076745L,
        -6419778085488192839L,
        -5937870815253811034L,
        3037623662402648617L,
        8475134681257527331L,
        7525467631675910914L,
        -2155136652979576665L,
        -8863297785379055796L,
        -3708604617726301534L,
        -1690991326769386459L,
        -4914650490954752560L,
        -3651000998051367684L,
        2310224359054007710L,
        6467643434506892008L,
        -4675387411483580919L,
        1539479589290018260L,
        -1317482399971130537L,
        4787089544028336616L,
        -817342235353043974L,
        9005897661744065787L,
        1698757063019545437L,
        -7450744880655832349L,
        941242980692041666L,
        3855717121175377711L,
        1838418961320954867L,
        7906600640157184104L,
        143774240320811355L,
        -5033235558726049955L,
        -3733441418159723230L,
        6322249537999722411L,
        -3599749198660319070L,
        7881889296519703891L,
        8772851375938262713L,
        -3694154014800677764L,
        5483806649985491869L,
        7467568598910778939L,
        -839413141520398979L,
        1922118942992405635L,
        5178389178007203495L,
        -2131625735310863702L,
        -5210713408719608360L,
        969214743442701574L,
        -6694519095627761288L,
        -3987528749564960054L,
        6145126602437587352L,
        -3312790047326848561L,
        -5928158217897491190L,
        -163692375920080658L,
        -4638104573766795427L,
        -8806888994476878747L,
        -5569512305780637370L,
        1905174746960402451L,
        -8994865683955938409L,
        6363190415094303315L,
        -819892343899481166L,
        4997088889036354237L,
        7165251770996374856L,
        2252387190424353838L,
        3749847241214246299L,
        7255309255472237037L,
        4672295531818402039L,
        -2560356144353793581L,
        -2883403067265782436L,
        1079945501265719009L,
        -4510676817588967577L,
        373333767776611969L,
        -5012601232582215618L,
        2359976143593903713L,
        -219011861965226894L,
        76910311444724969L,
        2854997659137560722L,
        -6663673552428958663L,
        1647372533507817437L,
        -3677652995772257250L,
        1062322309494793766L,
        3997004911860361768L,
        -6239801180306730115L,
        7679085503289673770L,
        1937634364969511157L,
        5848969401602626006L,
        6881011614306732306L,
        -1181711090074996330L,
        9115958678061403357L,
        -4697019334186712846L,
        -7555505080733309776L,
        833987302221784302L,
        5435944218394230630L,
        6255423471362246568L,
        -4754437678222079801L,
        4816793278931948413L,
        1100877215282697461L,
        -8016274804264066913L,
        -7426166309912307238L,
        4954658046266531508L,
        -4883068330523614006L,
        7317707222197692142L,
        -132182832923876333L,
        -8068825386408665062L,
        4223343479296349312L,
        -8975167582022794209L,
        121044807630038334L,
        -6383751162555570203L,
        -8622829604115563764L,
        -5344448720560932522L,
        -5623514837754212750L,
        5730174855784677314L,
        3652462989937797830L,
        4478407032758117542L,
        2265833848570320784L,
        6271663588896592981L,
        -8981268861954876981L,
        2199940822940402275L,
        -3590335709696386659L,
        -6646866007057749522L,
        933450190390074330L,
        -1705940515687714841L,
        884927789464592510L,
        7732852775367821028L,
        -1725008633709952850L,
        3394484383328726796L,
        6799292447107791901L,
        4773322126911057201L,
        -8847524026119006559L,
        1601292087637309633L,
        9085231169106063244L,
        -1810226490203477297L,
        3740885817651637744L,
        -7385020022373289763L,
        2121348550441645292L,
        -8934827205753906340L,
        2329866036041432354L,
        -227251566650479794L,
        778635064663790602L,
        -5472060023053535116L,
        -321365152251518886L,
        3413015614360083800L,
        6854233750120825103L,
        -8179957420127792439L,
        7639860843374003692L,
        -3294365432579777001L,
        7552965644538813699L,
        -6829073195148823177L,
        -6544243814787582018L,
        3276872521860349837L,
        1262482336572979429L,
        -6035485817914735217L,
        7123327863090630643L,
        -1419575113783159041L,
        4628009131887144546L,
        2592000227149193793L,
        -5446709712701171970L,
        -4786623131259234045L,
        -2209160773748122650L,
        8047313604406463713L,
        2928998992221512765L,
        8881744382098607154L,
        5910178969134356556L,
        2892684451843776864L,
        -7070070413419488908L,
        1140959062136881244L,
        -8078877408786009860L,
        5222805670098495052L,
        1324778166912833091L,
        7845644310752162054L,
        6958124637538105999L,
        -1400888392648874523L,
        2109573135688128455L,
        -7865948962736451119L,
        4676890351917403373L,
        3174741654796657218L,
        514620636603694596L,
        -5843197233618027131L,
        -8822533246164651619L,
        7073040785885419375L,
        -2228372994944279357L,
        -979163503523055821L,
        -6159677857222198592L,
        8520855780725828084L,
        4467908031177966524L,
        4623181254618087867L,
        -7383960780180519764L,
        239794897939583881L,
        -2449501378631335133L,
        -9114494545950113117L,
        -8576114508943907464L,
        7504752277411331892L,
        -7009950139050754470L,
        -7202878339609803777L,
        3502505583014180224L,
        3951294951154157069L,
        7576089410756827288L,
        -4992190452267503827L,
        3759298924972701902L,
        5361054523231489156L,
        211310386754363706L,
        -6228856565314106146L,
        680474239388747542L,
        2183261167073018417L,
        3717345151222475163L,
        8772076500587548312L,
        4345221692547451466L,
        1138257226251182865L,
        -2662436603566678639L,
        -4926523876409822165L,
        -3678204040905789269L,
        8860732609728455709L,
        6897346961138467370L,
        -1338981596745710341L,
        -8468953950219880235L,
        486233297899205409L,
        6673618507643695244L,
        1938737376496949348L,
        2507410887406001878L,
        -3144439725476898055L,
        -636790656650957308L,
        4344459600416585073L,
        8802289277757075229L,
        -1379964110832028405L,
        3060435899170352150L,
        -2801307070927302409L,
        -7124182447926601667L,
        -7426433529387563337L,
        7001977894058124773L,
        3831629918356470166L,
        -7304530994934688959L,
        7754766126986449104L,
        -46130394912060400L,
        -8185025239564030663L,
        -6956120752394147061L,
        4788947004304391335L,
        -1735188894957188142L,
        9113463202794835297L,
        9061503384633795978L,
        3807163083218760203L,
        -2329524236876369592L,
        8363142198304187431L,
        4935678682189220391L,
        -6502593394044097632L,
        9064904356860480362L,
        -2044134484905048187L,
        8567519794665060422L,
        3904525302336061297L,
        -1494404137865570930L,
        -5818134796948330499L,
        8916224465542753907L,
        -6810040832909920013L,
        7300268571307893571L,
        8665822462022449768L,
        -130646649469545334L,
        8931475468018250160L,
        -2817889287241953373L,
        -2752837956949520680L,
        -1276654552752920573L,
        -2251442540884890384L,
        -839799567481138562L,
        2986595498063065529L,
        7592128662766254437L,
        5065431482109049471L,
        3052000465060381141L,
        8064475279897785235L,
        7316665605154791806L,
        -7296124855087242119L,
        -1068075826697136964L,
        1770213836059184427L,
        6802179540194069850L,
        5235498833141060330L,
        -8408647861923123811L,
        -8554824869230440474L,
        7743295190330547469L,
        6188344344114106969L,
        8228222936284833122L,
        3344247964190287149L,
        414458000971249569L,
        -2223421794494123215L,
        119196072452533464L,
        1767473452281958193L,
        5414804141160961127L,
        -6164986093592204309L,
        -6945097172273522587L,
        7543678863267970809L,
        5972029304048115321L,
        7964352772558153769L,
        -8031602489285468891L,
        4513387372558218399L,
        -4317501704056493461L,
        -274621052405989180L,
        7357459993975469423L,
        -1045104405025437444L,
        8789089337669501295L,
        -1542665393152510095L,
        -5503352729676411061L,
        454066729485099003L,
        -4605997634839849907L,
        7986133233466526795L,
        7797356799500954521L,
        -9136756413477760050L,
        -3352377497517747454L,
        -7663557526205276831L,
        -1525996382926367358L,
        6802076880476427490L,
        -6954802694827637538L,
        -8255048613760674037L,
        -5526865146075990207L,
        -8041208983843583602L,
        -2876214926964143851L,
        -4567575438614223896L,
        8420564950974772325L,
        -4468508733028315993L,
        2158430745359670554L,
        -5782727846185414792L,
        -3874464451992878487L,
        -8557153996715396413L,
        -8661029592684774411L,
        -4150741558733167704L,
        4770959381850533581L,
        -1372013076694700751L,
        7324757985668456281L,
        5602798167879679886L,
        7096916745991890202L,
        3359546006805092444L,
        -5934158002733550535L,
        3518079055124118324L,
        3891916644964858524L,
        -784545090218957019L,
        8609087702173814141L,
        -4214391733469045745L,
        -2044858518039349251L,
        -3293020846953619138L,
        -7669901992597447071L,
        -5672416569520217737L,
        -3662648759277482540L,
        7169982674540677627L,
        -5034338530874716914L,
        -4364910862609957183L,
        7039463956727691070L,
        4376009824957522714L,
        313781735218274235L,
        -8374050652661964404L,
        245866763156781213L,
        7728750319168662084L,
        594262726005822013L,
        7249071001552727284L,
        6347219246484821270L,
        6926202384981930971L,
        412730668885611257L,
        462335472710927109L,
        -348263357460866746L,
        2609062719003263340L,
        1486600821422386160L,
        4132108509971674644L,
        8030540528138614735L,
        4390114767626197726L,
        910347911083267698L,
        4296150444361133712L,
        5908327276875316267L,
        6462269834278773298L,
        1022138366617103631L,
        5383154957747795010L,
        5699575167827705734L,
        -2652265514146457472L,
        2238012648012330901L,
        -5288285844452580653L,
        -2216751023690323971L,
        -1798254526639229052L,
        8315911965214904362L,
        -563311534821832764L,
        -1984298076611665046L,
        7341064198541676544L,
        3795556264919263871L,
        -881121796727972887L,
        -2490810657935140123L,
        6330994053097077495L,
        1735731862607083753L,
        1821412119760767989L,
        -4980141494405310L,
        -5081188792462627828L,
        -968905527778495175L,
        8787413501897229149L,
        6443042663738607800L,
        3692053332344295218L,
        -2382648731027216801L,
        5921028055250520509L,
        -4441446372395233901L,
        8057250897470973794L,
        -2179625882359143302L,
        -4585983332243873847L,
        2947899043243289973L,
        -3598625264816669494L,
        7399975594911733454L,
        8846907058100841405L,
        8603925306148488337L,
        8723738803991223798L,
        5322899334586289468L,
        980873212211856324L,
        1004635762793822977L,
        -2140100049088182929L,
        -3651897446664191337L,
        -1874000194611339405L,
        583292569907066994L,
        1976990985958368945L,
        -9218950396095831894L,
        -3373076707808283751L,
        -5833521315607870794L,
        3429301542190478141L,
        -5779101479993755753L,
        -3292515863222404618L,
        -734356228269251634L,
        -1419711834445978806L,
        4791895985462274442L,
        558659404424630665L,
        4275995064472140735L,
        7226750437651616111L,
        5615235292948993742L,
        4861367471360311948L,
        4049264481777356211L,
        -1835014487079257912L,
        4979204155403334102L,
        1560749888033433035L,
        905000432154591788L,
        2652083709010751184L,
        -434390227817650528L,
        -3344931822017511339L,
        -4822779910956367280L,
        5882026350853463756L,
        5891977867625769091L,
        2576050208155010377L,
        -6619518348855378096L,
        -5742844076219814181L,
        -1914025252482891199L,
        5421866639996215069L,
        7835065614735292470L,
        6475952342457673167L,
        4955638233787312652L,
        1871081664582907788L,
        -7245345286793459755L,
        -3526808804006913310L,
        8344018619352798022L,
        5358291849312032011L,
        -6703839318935180537L,
        -6055000653146022613L,
        -4547726197375295714L,
        -2022691831043772930L,
        6905477133149069142L,
        5578750882894839351L,
        -2144291497652708501L,
        4762703426605093736L,
        -5891027977685165043L,
        -4718456023150759710L,
        2043414443352475790L,
        -4859905028662199142L,
        -5557172942093408989L,
        4188007248401731314L,
        -2942301800843817532L,
        -7954850101179530301L,
        4495970396795510187L,
        6186348734301669790L,
        -3001408455591637606L,
        -8982053599214642216L,
        3206742202353249401L,
        -313214205344900099L,
        4889646506758624956L,
        -8388345116324930401L,
        -7881544699619548038L,
        1635696647773999186L,
        7402207885754426706L,
        4891433307203901702L,
        -4902077413549687845L,
        -5143362415788346631L,
        -4439682815321989946L,
        -9042829490377265502L,
        -4792104448908161508L,
        -6627704780170319053L,
        -5929099532414229375L,
        -2106815749065875905L,
        7153802770224100626L,
        6823686413158082729L,
        1694613412884784670L,
        -4006378366105720051L,
        3578159103226821407L,
        -1734412197339646213L,
        -7830870208911511566L,
        -5772771500325183897L,
        -6370961521433155442L,
        -441749519334552646L,
        1412754462081697221L,
        8641432394145297452L,
        -4975119815461720445L,
        3065463668829511567L,
        -1417732062874945313L,
        -8665490603267793267L,
        7087497419346604712L,
        -1054219113545905941L,
        -1315389530554573357L,
        7307121779722859187L,
        2145881449095507057L,
        -1356311243412327435L,
        -1586722954636622149L,
        -2596336211110400075L,
        -3215891778864924520L,
        2985606461750734808L,
        4692985241349436947L,
        -7071521356811106236L,
        987506433534876222L,
        742743288878802279L,
        -7582066902960079495L,
        -2199576919602302097L,
        -4292471260346290085L,
        7557016375506342717L,
        -174092040409188492L,
        6491426317028063034L,
        8822682594036660801L,
        7173417784955207190L,
        8551647075273107302L,
        -7644205156880731114L,
        2369403682692200990L,
        -6106179001069207874L,
        4406129042862978293L,
        -5294299708922784965L,
        4517194244669198236L,
        5935865739771554409L,
        -148579357454083417L,
        -5274315200034319889L,
        -5097950017153595353L,
        -3022334830850024229L,
        -6777482830421353059L,
        -2313967150562967720L,
        -1391991890442893937L,
        -868882361960329098L,
        -4058598280032086693L,
        -2072498290023372165L,
        -2078524543685149712L,
        -8995602191301155697L,
        -9177698560918006329L,
        -3896826154277082645L,
        -4805811619774811701L,
        4704091919527581969L,
        -8267745047895479775L,
        8851711941947232288L,
        -7190173558292582252L,
        2840928875881838186L,
        -4726327121612974966L,
        4739308903198773507L,
        3567219622550820947L,
        7071819841015279071L,
        1838081917409050236L,
        5764863108848455953L,
        -4900908742261783725L,
        -9214052328693993926L,
        -3738104023508183695L,
        9075020475259263468L,
        2384031765345940148L,
        -5444918603598131168L,
        -2882755332293334170L,
        -5876017912667903002L,
        1468518394398751688L,
        -94624357829376694L,
        1502968325367457055L,
        3212228973304759982L,
        -6076409951803744617L,
        -689621575143754807L,
        -7544663587107097008L,
        -8464517018621156157L,
        -9197647440671761342L,
        -1138277308728785000L,
        7911450175654362014L,
        -2846463762797468283L,
        -5779655457569633261L,
        1229156604453014638L,
        -5248062133487718488L,
        1945087454960389231L,
        2291489842271385397L,
        4548491699913654765L,
        4776530359090895890L,
        -2392184633655107718L,
        -1866462256049641298L,
        3379059210862389839L,
        1324602936428062030L,
        4537114827125131113L,
        952752288945823129L,
        3565038799689635380L,
        -4943156879148090116L,
        -620677278985252287L,
        -5343479831206832325L,
        -5942934304939405391L,
        -7430408163129035969L,
        -8536378671288512743L,
        -630422435482211312L,
        -4059263730309361295L,
        8362955714824710045L,
        6715535958794722463L,
        -4944093219667507205L,
        4750238213300021794L,
        -8834529272883383766L,
        928202066153864099L,
        4277678786869773289L,
        5803777088958198033L,
        2532770551571706676L,
        8937228681131524098L,
        -4349917458712392154L,
        3600518091981945868L,
        3641253327732529861L,
        2269352593538301269L,
        269968982007354668L,
        -9126734426165655944L,
        299251652927012593L,
        -2622198051228209602L,
        -8324653355422469245L,
        -390691951434421313L,
        -2377466392094607664L,
        -7705538047856565009L,
        4335372426529707859L,
        -2498731359403232390L,
        2813626900624072081L,
        -4153400007749091122L,
        7328219555534666722L,
        -7039010207561583485L,
        -7451340093255351815L,
        8300978712927459521L,
        7991017147293573613L,
        7339614609177704490L,
        -5125145048677445929L,
        -1538654431949953813L,
        -3305023236591253586L,
        -6649451688833693508L,
        -5820953574235680980L,
        -912420997561859658L,
        -3902860965130038472L,
        -4703516784403936152L,
        3949690979346927322L,
        -5528618711335454103L,
        -2895138419635669572L,
        6284706264052186570L,
        3181053554338548547L,
        8917972201915064935L,
        75545390955492453L,
        6617851455758380376L,
        -8707286283526343202L,
        6458946651764889185L,
        2987210920096501853L,
        -3929693201880566946L,
        -7311177148068531782L,
        4694554226910788398L,
        -328680149836377578L,
        -6188879516160944336L,
        -1439844932334130992L,
        7708794174024674351L,
        -4972006945073432467L,
        -3162414061439364796L,
        7611809776816354031L,
        7254917564661254243L,
        3667622699015156399L,
        -4913423608887015660L,
        -6406987107635608389L,
        7035993050305636880L,
        1916243288799539554L,
        -6879510021825536938L,
        -2337637717379887008L,
        2467748304124499564L,
        -3927108882927586500L,
        -2369728608878680941L,
        342563431112818562L,
        -5912585188049034482L,
        -407795551560657970L,
        -903691070858875362L,
        -2971339966384799256L,
        -650451997911266170L,
        5242710773034780732L,
        -1758576207105628707L,
        -1470978453124678938L,
        2028635970527834903L,
        6815510071666420375L,
        -7234436760336244906L,
        6292192056464010286L,
        1442992781227112073L,
        741439802185251252L,
        8259834200418148233L,
        -8169078357231916499L,
        -1797363372045868164L,
        -3466386712830748319L,
        553979734832180798L,
        2513380028887544649L,
        2661079907020837034L,
        -5749043704832338332L,
        -4746726654147920522L,
        4037149160512845688L,
        8783332493545543365L,
        6975966824887269880L,
        2414109369471474312L,
        5221641322938052740L,
        1045377610832006372L,
        8220190173269826766L,
        -4267642609168870565L,
        -6726832047984956997L,
        4915477332941388735L,
        6608423042031786987L,
        6581279335256275269L,
        -1248042010437529483L,
        2938297630330955554L,
        4806385874000231762L,
        -2426409043681964977L,
        -3104809890914424604L,
        3239277469128944935L,
        -3228874498793910978L,
        -5342097497391211924L,
        -5044251361276447963L,
        6207287572362362872L,
        6453529115456288086L,
        -7761442273817439921L,
        -1313531713770046715L,
        8881673399342129140L,
        4733296612672962576L,
        -3473666608340546150L,
        8218487469845557336L,
        4700027778130567975L,
        -5543249054637254074L,
        -1139018312153423389L,
        -2628885986060279174L,
        -962753284069616419L,
        -1977142032804526516L,
        6646177420565083192L,
        8016625832549598730L,
        -1342495141337498297L,
        3211076661681150725L,
        7846691090184096603L,
        -5609697763635391879L,
        2769843206190578001L,
        -5672542928916786367L,
        4598226438051963770L,
        -3227148609660772768L,
        -3607859173825103520L,
        5670249508182208346L,
        -6032039770208777467L,
        2614105956519160427L,
        5083815977140776067L,
        -3296597605117180179L,
        -7021640596217776934L,
        4650797426085619966L,
        6823311525616632062L,
        7318563146604289182L,
        -3249092227795437062L,
        -151150995477552393L,
        153136448819291758L,
        443418003145395916L,
        330893611106491728L,
        -8176197849722920156L,
        -5799839357743111551L,
        2867443686326337937L,
        5834608113617061904L,
        -5527344088399014587L,
        1370666271993552626L,
        -9013120144216259368L,
        1830815874448486738L,
        -3091499273874627758L,
        2439461791078633880L,
        -1604733478398884862L,
        -2833138167354744622L,
        -8845858068800398866L,
        3394332891858442031L,
        3777164890336719073L,
        -2607231551899902562L,
        2739493825272673913L,
        6829159159418711593L,
        -2509633811118610608L,
        4359413808008559480L,
        8154016792499406661L,
        1004971369233421951L,
        -3608591463620078287L,
        4138095872882887017L,
        -2603875175400857352L,
        -8405872505069427520L,
        1602648447388078826L,
        -8268213664821963029L,
        -7851183899871800583L,
        7988099858367774014L,
        5236015171155823561L,
        -7662486771050598416L,
        -892959823376427763L,
        -9172278347517696397L,
        -3334552067210399222L,
        1963387851673972629L,
        366925093822958196L,
        -8737871286507690286L,
        -4059561536773198338L,
        5578357435587801257L,
        -4737036380408504897L,
        -2389650777043999775L,
        4340566577553274925L,
        87873442854751345L,
        4155340801507615439L,
        -2055658632596291829L,
        6753511476349576327L,
        6452063849292950509L,
        -1603688271352032940L,
        1697703077026901826L,
        5824711473055577279L,
        1379237507098137739L,
        -1685127774222319703L,
        -3439406616052314190L,
        -1744663886940391594L,
        -7216395177905133758L,
        8010452920400446284L,
        4766353280757415234L,
        5289169306825991429L,
        8447139631505072923L,
        321854408757186899L,
        3617266287300740708L,
        -4787302239589324619L,
        -4363130050517248733L,
        7132767988848188413L,
        -5874421566019315237L,
        -1493418467779572102L,
        -1040767190340986459L,
        -5719181448516381271L,
        945641378172265342L,
        4317786055883622899L,
        -3043053328324478777L,
        7736235059159196619L,
        100300833538974478L,
        -3101949869641724204L,
        -5639485198324936982L,
        -8593145909773483082L,
        -7461619124932989195L,
        7184437998425110153L,
        2326528031076754258L,
        6398542587063881263L,
        5121771660090392362L,
        2305396835393933680L,
        -1749007542647542275L,
        -8460868976489643710L,
        2812416063972701080L,
        7906577727755007976L,
        6878465050504315500L,
        -3674658411106758781L,
        -1455749094773635190L
    };

    private static final long[] HASHES_OF_LOOPING_BYTES_WITH_SEED_42 = {
        0L,
        -5489459004343878315L,
        7503380622199085724L,
        2441079805732305625L,
        8819902077857493254L,
        -7239504485102480291L,
        -9103724217032567499L,
        7826741851900927935L,
        7861549010645900695L,
        -4129502239425616770L,
        4078461785955388090L,
        1489179179228483555L,
        -6880302114450925784L,
        -1359221788845957867L,
        3262871501411962535L,
        33112984866957419L,
        100800524801407501L,
        -3943434617574838336L,
        -5567763290832289441L,
        -6049917652519314692L,
        3409418409813158633L,
        -2513363768495658276L,
        4729321061686624929L,
        5115271314646777786L,
        -1775717939635903349L,
        -8985310044214288169L,
        -5289981668663347291L,
        2657445282762234064L,
        1658189325818139403L,
        7040959815147060996L,
        -8236343544564189629L,
        -6468423844022575750L,
        -1734633079588783454L,
        -8679472524235675133L,
        8623155328902958458L,
        8266452376374499416L,
        -7986536660276263608L,
        -38125844968838697L,
        3921548615006566009L,
        4167944986113577315L,
        7096373300544578406L,
        -560467948694959375L,
        -850973896622675114L,
        6041177228348470283L,
        -7420438933559505984L,
        -7157017808797228913L,
        9217073653386571039L,
        -7925541759804601833L,
        -4487790335997352328L,
        2187762356575143872L,
        -5206697366103859618L,
        8288284347584621435L,
        6423483699864562311L,
        -1301663738927719460L,
        5991822234757129975L,
        8484285492972108171L,
        311551427639324312L,
        8099673191736882495L,
        4653698799511358644L,
        4648482686787053407L,
        -4597597110260670199L,
        1984036580098860995L,
        3448207916911718973L,
        -2419012589431525517L,
        8388910627173913596L,
        189931510972302233L,
        3424055321741735739L,
        -945841679237989100L,
        2168309080935198613L,
        3930831257313125476L,
        5077730010723338083L,
        5376103945202976111L,
        7108178613986510272L,
        -9053383358889392039L,
        -2078618651987341503L,
        8653340598805107048L,
        8828877028299898393L,
        -8807324610935730640L,
        -5999341882281512306L,
        -4455338180650516077L,
        -2009585294493958968L,
        7588673118342431490L,
        -6389009730910810602L,
        -8947948912760624317L,
        -202446748676143218L,
        -6162519566164064386L,
        -4803722494667158367L,
        -8605895565747471606L,
        5066687539085198609L,
        4310933084750715996L,
        -4304304530429964114L,
        7737891570612803812L,
        -3921768646472251957L,
        -773766867734108857L,
        1818530881116628286L,
        -9067673379583734262L,
        -6823589291299652903L,
        776981371466262375L,
        -4725670966108995L,
        -8569242227636325585L,
        7909516787010450443L,
        -5409862721314071515L,
        1913390982618688260L,
        6633081673493660503L,
        -3605710376875214656L,
        -8651943069220377447L,
        -3425208691350179262L,
        2023446091470969965L,
        -2468046963501962333L,
        -8040451662076760690L,
        6158975019111504792L,
        6451542295099535005L,
        1802801579248303870L,
        2903003428319375652L,
        2834890810006302360L,
        -6999968617065854757L,
        -5369183269958550280L,
        -6215225450449404642L,
        -4073062335503587325L,
        456244319192879701L,
        -24866508719391059L,
        743755516945687656L,
        7224143490658054462L,
        -3977052728265338488L,
        6697206251899645381L,
        -1994430781487194731L,
        -212878833179631937L,
        -3790446480600918357L,
        -8511592301089770863L,
        1219524981576986810L,
        4205669984974194347L,
        -9209991568622991160L,
        -8128478767060283641L,
        -2076540995963994161L,
        -2831442865177886383L,
        -1554323285239301165L,
        1155483303982507802L,
        5625007334328700567L,
        7506810827241318270L,
        4850815999417875788L,
        -8326271238555403498L,
        -3594934673556658753L,
        9130555384341207831L,
        -1636079010828843126L,
        -5064854279878768025L,
        6320681008229340321L,
        -7870114218944117341L,
        459008888574399930L,
        -9220264964593181895L,
        6941777480363861135L,
        1923797770202213346L,
        -7993097353081304854L,
        -7062721428278188440L,
        4641857350677613467L,
        -1122321128205157978L,
        -3526624090474535074L,
        4944983273040270843L,
        2063583183742948633L,
        3655700015999632472L,
        -5913958156741267094L,
        8613461621342346429L,
        3728928562759850702L,
        6241947623237199216L,
        3774760249391115825L,
        6588067708543859113L,
        -315068792768811173L,
        -5773745174066109816L,
        -3452596043397112080L,
        7177068584300707868L,
        4097817609960514365L,
        -5523936337054287311L,
        5444453562100935555L,
        3539268898986090748L,
        7209639972437712982L,
        8208887215850721310L,
        -7584003436803008027L,
        -586284534101862111L,
        -6581923378985929195L,
        -1292149830675494156L,
        8697160487577903529L,
        5250575745761625176L,
        8289951302281058324L,
        9086201969492098206L,
        -9184690972075930116L,
        -2558748134131757348L,
        -9201085943428059583L,
        -1203051916666479257L,
        1834444962634487203L,
        3751251954263485890L,
        -9131637525800107438L,
        -8564897964388077031L,
        -4014235661520374127L,
        7772145975456897696L,
        7355322558781294763L,
        1785796348137315143L,
        -1810503426695106112L,
        -7963306922570812555L,
        8368320991787406185L,
        7378068988124953771L,
        3490895360405304927L,
        -2006181578179635491L,
        -5275131505037815605L,
        6086715123177826637L,
        1009907222295997078L,
        -189851063854443982L,
        -7046763987694627132L,
        4056906261431690499L,
        4216346710909753402L,
        8183939407068939669L,
        2208727954886688050L,
        -1634098797909572318L,
        540308152596731090L,
        -1727304011169135128L,
        -6242236677749002446L,
        6755106734652766002L,
        9202496665027870588L,
        3145991544544797692L,
        -6269373509996933125L,
        4266947436916246907L,
        -3398567844975915797L,
        8384588213561617608L,
        5989354874425809092L,
        -153343096544690395L,
        9134497380995453092L,
        -6788300148488988381L,
        -1072244206525774929L,
        2731859015443790841L,
        -3870727816981171328L,
        3166678867327320482L,
        1782381207784406192L,
        582296485367088592L,
        1924609876720457074L,
        2020031065269578886L,
        8699089776427025205L,
        -8250138664796740621L,
        -8999944208955163022L,
        -7762984786287364139L,
        -7261637070280909069L,
        8156604099628561139L,
        1927922010019336920L,
        -1965484533023120730L,
        -7378358867965860473L,
        6664442544791033212L,
        8081003240836167908L,
        -4972927228442651371L,
        7037220157993345548L,
        -4215239911770630248L,
        -5424767419067785938L,
        -5015387983382506291L,
        3753298110869126767L,
        8912454012440748855L,
        6246157925622615315L,
        -4131608429474620379L,
        -8866364110645726391L,
        -4098704456672758799L,
        6667152953392950525L,
        -2762608273732169437L,
        3667940640226771520L,
        5470356938562609842L,
        244296890800468507L,
        7856373341189773146L,
        3177289659856312500L,
        4580751320975678335L,
        5452034875875902693L,
        -6459973872666569214L,
        8625227864473625727L,
        -9052197575017583830L,
        -7608813006404804371L,
        9124264055991041910L,
        -4100497818513510737L,
        2980793238691227316L,
        6575852184122601786L,
        2996374119615737222L,
        -5870513842846624786L,
        -8762559588158401352L,
        -6912312183162430280L,
        -8032694211707482067L,
        -4215194693068873060L,
        -8105263246073793266L,
        -8307710354093860627L,
        -2478197063796008569L,
        6680336333415266706L,
        -3911773407997852436L,
        -7238133989410260247L,
        8137218262646498370L,
        7578266702219259398L,
        4984246736570911861L,
        5740916903194578939L,
        4650616964627618168L,
        930361122203084377L,
        -6713840012306591264L,
        -6351841364919936067L,
        -2925823570763349733L,
        2325060427136132089L,
        5274176558463348026L,
        -1818816163370336308L,
        4226120637281533162L,
        -8207986865454475590L,
        -6725133576876609787L,
        -1600898310239203030L,
        1696982907642760280L,
        3217068829621413413L,
        5726899844622119885L,
        -5334923571927126756L,
        2497036294033639132L,
        735344340727198341L,
        -8578481740421909478L,
        5911424493524947756L,
        -2237081032372483426L,
        -1561034557541861451L,
        -7693466035562951498L,
        -8752739978025721151L,
        -3280877235853016561L,
        -335598525248223652L,
        -8083858348383020986L,
        6627393503177414372L,
        -3295140360722222876L,
        4582776009525319397L,
        -5331509940479931877L,
        7726342923596696881L,
        5192783923588484563L,
        5568191868601892365L,
        -4393837608149654125L,
        1618228693783883350L,
        1865907879575939327L,
        -6187340976863502879L,
        -7405067505368332090L,
        8443777486378865412L,
        310723497241167764L,
        -5731861018710458545L,
        -5188200524108388224L,
        -5634297329175284953L,
        -7899478064688965957L,
        7020598068122504891L,
        -4174871225816409135L,
        7104858324370686207L,
        1001810694886929241L,
        4733684478957873906L,
        1798707327797267468L,
        752841691753555520L,
        -3603149832862524798L,
        1130977238495142718L,
        6955284253225269412L,
        2247585991738722824L,
        5340594336749478221L,
        3633355463323711913L,
        8199061420280246379L,
        -9034722840567119949L,
        -490757115109600212L,
        7729314659586557941L,
        -7671659041667731989L,
        8094072612753317160L,
        -1759769045835117937L,
        -6152365461952206160L,
        3606911680259234419L,
        6955318748746854408L,
        -1011200841397882883L,
        5519324885444860877L,
        639515187583097557L,
        -8137297682181162942L,
        2539677958872014602L,
        8313575916214347743L,
        -7407936988953985656L,
        2917949547560244958L,
        -4496138768486595800L,
        -333949342684348960L,
        -4317613540520387633L,
        3175626083058125320L,
        3148487542664978970L,
        739198439328606230L,
        -198883737414807980L,
        8353961470331151973L,
        311945919273194245L,
        -7052740176726980689L,
        5254438376261024030L,
        -7550828065282849515L,
        -34611043042402666L,
        -9223367429051483136L,
        -3370299527924413091L,
        -3126722705768731979L,
        -7163303945559650746L,
        6785247517465168600L,
        -7406637645862089930L,
        3385765690609235233L,
        -2811478167849833354L,
        867164096842195609L,
        -4105629147992376513L,
        3062984161819352214L,
        -9109105071124058400L,
        6860897610277413293L,
        -188188174565377756L,
        7884790815752132293L,
        6738195176410269361L,
        4393541369181811113L,
        -4968060783295630360L,
        1281959927064810831L,
        7544219152372891202L,
        -3139356250465507412L,
        -4662764301598305279L,
        -5309739957670290877L,
        -2335698040008447736L,
        -5063258188578883170L,
        -6060472572881319296L,
        8510043957998376964L,
        8054425688228121580L,
        467181640856973250L,
        -8554733707863771098L,
        3945436629188897073L,
        -4648027966578763700L,
        1436821870625146671L,
        -6039021841572044396L,
        -162916729795043698L,
        1387478937752001176L,
        -5009376788980435331L,
        -427324746652961365L,
        9045326031349144872L,
        -6571167574055307665L,
        -7420045062343802233L,
        -8281911816922916681L,
        4447883374750578122L,
        8857646523249955246L,
        -5267905974004184533L,
        -6586019939801565413L,
        7267509981674277869L,
        -1730011012540783294L,
        -3361327884510257968L,
        3153991252302571831L,
        -8310723694192823368L,
        7365064041171947240L,
        -7013288395764077337L,
        4424660961017823126L,
        7969284775663103753L,
        -4673682312621214884L,
        2388177300282901685L,
        6610519624906161503L,
        8382367186870347676L,
        8011820517530369081L,
        -3416914590527734423L,
        -4432873885847563136L,
        -1241220595388288096L,
        3560316095147026509L,
        -1797075113553514394L,
        6552677553429396356L,
        6246332708352927155L,
        3861438072358225949L,
        -8565290136579594910L,
        -8002406576632498243L,
        -6412781196438208222L,
        -9047876088717010136L,
        -8568000574169975921L,
        5244941923904200088L,
        1628817165486138289L,
        5749777718311982230L,
        -8611048104500552826L,
        -6407884750949781504L,
        -8282995989967171744L,
        -6031458083272026720L,
        -1472077105364514517L,
        4504451286765383015L,
        -418652306528352371L,
        -4257356316730897484L,
        -2957389181041677312L,
        -1145720335115263201L,
        -3091972849220173524L,
        8005939599601764433L,
        -3417016708987198366L,
        -6247258224636787950L,
        -472464393458793289L,
        1487875631970459019L,
        4893795040625314681L,
        2729581410182440515L,
        -5405273280140448608L,
        1452154199208270257L,
        4883843472429258182L,
        -8796762596319773668L,
        -5429154805367510111L,
        4426909737432342245L,
        7056415113393668414L,
        8774883135212925637L,
        8450999418184998816L,
        3820763711897833468L,
        3300743371144621367L,
        -1630173808856631543L,
        -8553736113528269822L,
        -1370002862968307889L,
        9214585244396484676L,
        1427686269336175185L,
        -3598631782642855473L,
        -5269185928615394541L,
        216499523242669211L,
        7102788753870316442L,
        5649046266779873829L,
        -4035565318503894376L,
        -1855507138875094206L,
        -5459594227201815570L,
        -7410474841354966828L,
        6975082282771211247L,
        -6353323886182944803L,
        646100630104660099L,
        7745081824763595518L,
        1579836547749948481L,
        7479608073819635972L,
        -988819659251472110L,
        3121457552118354542L,
        1867337923564303955L,
        9039210151448164075L,
        -6005672592365502974L,
        6809724817190798332L,
        -8247807826434556808L,
        8599378181039531724L,
        -8714366537708795385L,
        6194756214969034120L,
        1931855937995972224L,
        7780282029507594520L,
        3768324591352426949L,
        4770908273445282121L,
        -5412117564459724461L,
        -6910299206138527089L,
        -750571165687777551L,
        -3467143436546008630L,
        -8778968277750614352L,
        4618269006460421671L,
        3784770542544192149L,
        -6555035917940220116L,
        8763137794052904168L,
        2160001599658800708L,
        6579628917216038693L,
        7486800118422365343L,
        -4727709771709935935L,
        9187028796349560592L,
        -7646323237657128497L,
        -7748151792724558120L,
        -6629529116619603711L,
        -3614919661598905131L,
        -8926765781889646711L,
        4895079662109541742L,
        2313039280851327331L,
        8353059951121245572L,
        -4361790301612843227L,
        878233584623997873L,
        -5808341064891365335L,
        4957901996955185469L,
        722227598467337170L,
        -8083855043640093449L,
        6296815072878721220L,
        3074098970376702630L,
        6487949451261677276L,
        -8230337956949714079L,
        1227684096490474594L,
        3317131110226161460L,
        2781726232095396341L,
        -9035241125603661424L,
        1004655391950987227L,
        757196511985132878L,
        -4972385379979135932L,
        377837633918307403L,
        -1837164923183207790L,
        -5200366587699061855L,
        5619426661630165722L,
        9149546739708634949L,
        -2161224822270988047L,
        -8498758122904002877L,
        -1903606037752461125L,
        4004956335353186480L,
        5899754692366277712L,
        -8569895455403315824L,
        951203285725380985L,
        -724485898478246754L,
        -2310191424936462146L,
        -1054133327199042402L,
        -4761860002343924045L,
        2144188224512375766L,
        -8618252392915479178L,
        562427488463506661L,
        4069612511580576356L,
        2846217274335476972L,
        -5321770005300190195L,
        -2665939903796278305L,
        -225615242036287371L,
        8340124049763317532L,
        -39328151188901959L,
        -7704128105896373508L,
        -6608889722744029365L,
        6847177601802070732L,
        5406538445625075780L,
        6056004216550410553L,
        -6388427415087871994L,
        -8510724109624398612L,
        1448506476683617231L,
        7013188100856212082L,
        -6841370342344231710L,
        -7996960406936053822L,
        5644557457158245692L,
        -3296152646650497129L,
        3536461329613452151L,
        -437075207063513146L,
        -2301050489557934983L,
        7033064488351122705L,
        3720571868910950941L,
        -8581343467023390064L,
        -4996282238270355618L,
        -4434808715189273218L,
        -405745463035508082L,
        277285441155208541L,
        3640603191696429655L,
        -6364389291678904211L,
        9077697777962306790L,
        -4001601843892243802L,
        4036732856234956705L,
        5248392274720098326L,
        1116847972047877816L,
        4922394575619327211L,
        -6285322752897148435L,
        7067487638261530629L,
        3473525332456520606L,
        1575187083569040662L,
        -7670017995359806441L,
        -6787510510738894320L,
        2880618714956167265L,
        -5120445290790388729L,
        -1947917760777447734L,
        -7623296073694422101L,
        3252361779690367994L,
        -8216056055022359562L,
        7525264382031021147L,
        2009893625701158286L,
        -3406258625692336241L,
        -2113315207827000149L,
        -915671322135664152L,
        -682373916879109470L,
        1102410309220747041L,
        -3371660099417710298L,
        1284384932118496184L,
        -7899332066557362531L,
        6082326747969637807L,
        6505116014978799418L,
        -6638025017400409848L,
        8709456587813780355L,
        1040637469205493394L,
        7527200228140193048L,
        -8009477968838239749L,
        -7823164037283850971L,
        -219876523001630476L,
        -848139362896608550L,
        1659572939496253703L,
        8161950828762262292L,
        -5426744617505876369L,
        -6207765518458666734L,
        1330209524194208987L,
        312506988145426657L,
        -8129873431497496113L,
        2982679062731022510L,
        -5042254163968603642L,
        7189511553154561296L,
        -7590604770017947250L,
        120767234548166783L,
        3585968789169172934L,
        2487430371362637909L,
        -2117477977959815963L,
        6421046597883904862L,
        1915941733899660405L,
        7900047779862894999L,
        -7543931826611217049L,
        -4916952521775291426L,
        -2868801994144941951L,
        6651512411349747168L,
        5311738336671629395L,
        1306146344435585753L,
        2360381402797636290L,
        -7691226452323755207L,
        -7944284715220814174L,
        -278406581618280958L,
        1353480834890980580L,
        -649067407317035048L,
        -3147933535381057618L,
        8567698068491364114L,
        2639644310821531916L,
        -2152161395283566770L,
        -4888814748855310545L,
        -6303207358154211232L,
        -5099131870614196461L,
        1424098929808643092L,
        -7162716687949255953L,
        2211086469787899963L,
        2852072241831923863L,
        4450856661460487818L,
        1332130522000219486L,
        4147251563283461874L,
        1207043674339706873L,
        5443671922124706933L,
        1900093839190289799L,
        7347503945522504540L,
        731422176531392690L,
        -6899700774889484649L,
        7348057852476419965L,
        4763308267257593468L,
        70257218879991846L,
        -739514492116955951L,
        7591767932477900284L,
        -7791579872430789094L,
        -5400779832289360193L,
        -5360582829574801216L,
        6569971639852448678L,
        6160828497878986046L,
        -1727168098652705184L,
        2168846004878378381L,
        3297327696375153959L,
        6816148183875835322L,
        6384670180559749639L,
        5098012111875182199L,
        -8698209070789796773L,
        7063131632249681588L,
        -994727287627957439L,
        -8454912490309479278L,
        -1616686461984094239L,
        1344308255896663208L,
        -8614195194739181643L,
        3663344734731025818L,
        1074555005632296286L,
        -891663858889754871L,
        7659504325229552894L,
        7916780674786126372L,
        8131132452406873222L,
        -8409366302969284111L,
        -7706327771470710338L,
        -6629724794338812712L,
        4368055399977230653L,
        -7898426087691236094L,
        -8547784929920600040L,
        -3916622571725474306L,
        -4989308590637893844L,
        -4255097229406935303L,
        -8312609963939033197L,
        6449019140953263140L,
        5157342915532938711L,
        2114971170894382906L,
        -3301242078535642691L,
        -8424713197061111009L,
        -4112134632049136236L,
        6249939489475102785L,
        -6545073932128498060L,
        -7043982864808573077L,
        6372613537930878573L,
        3190762373477289654L,
        -2561239600356400775L,
        5207465341857679769L,
        -6030085238141555836L,
        1973763449748050094L,
        -2775325371903939992L,
        5477072914568061968L,
        -8020494920018725702L,
        -6778226228458777374L,
        -2143361845827059097L,
        -322386110818436422L,
        8486418337526930389L,
        5809129796682159464L,
        -229942269923625040L,
        -2016398216082799086L,
        4390670686371535226L,
        -2276539331110400014L,
        8774439736263797799L,
        2316161663149901044L,
        -5179580561974546556L,
        -2396133401944865178L,
        3993962098659830835L,
        5629462452797886102L,
        -5192061905328685380L,
        5410941996746617173L,
        -3413195609621963464L,
        -3061527928424392689L,
        -3054113352229014259L,
        -6424671610054662331L,
        9078610721616192048L,
        -8898368096446875621L,
        -8847632839009160349L,
        -2332831971225170476L,
        3877449624663826166L,
        -1998707448586751868L,
        5429087783572068454L,
        7505803154815651797L,
        -6830143293644567388L,
        9027942884466367570L,
        -5480807710956981276L,
        6168732146645754047L,
        8449301918694745548L,
        8778131551317466896L,
        -1532492605199755867L,
        -5391910637120789750L,
        -5181509335176571510L,
        4222261527096078209L,
        -68830318451459248L,
        8424841595605316764L,
        -1190497481446057488L,
        -5111948271985560837L,
        6030679480752773280L,
        7083507386503347300L,
        -7935292289390985767L,
        8633627957234765752L,
        3577142810841159035L,
        -250643146821978960L,
        -4509721932431137882L,
        1505984612542211946L,
        -6225351760438749240L,
        2182044745474903681L,
        7360081805774852071L,
        -6980851881719350610L,
        606607963933040411L,
        -5770107456508471265L,
        6205171527781848205L,
        -3033545694812095937L,
        3583699718972282357L,
        -7909170363462215258L,
        -7171285223522587462L,
        -1732747624639492792L,
        1139035341695075787L,
        -293770954049652554L,
        8082120553607704108L,
        -1767102175355955963L,
        7028133695751489509L,
        8595468330969519695L,
        -4137307279143322835L,
        -1088171437960554838L,
        -4259340386446889998L,
        21294966289363633L,
        -591949962374694703L,
        -8837800592081259554L,
        7601644682819323767L,
        -982502680195313135L,
        4181853267649918079L,
        -5294003730853637099L,
        -9158462991451185546L,
        7714670871787985179L,
        -2721092666693913595L,
        -720896668009511516L,
        4921838985018879422L,
        -5038198705157071079L,
        7630728150546004158L,
        161966667436904740L,
        -6529489221033141970L,
        -483227329696642903L,
        2849537400103054469L,
        -5932420765747592953L,
        3979533979134217316L,
        -4049239836784843381L,
        5757146880398784254L,
        5806736286865906304L,
        -8474302415960396385L,
        -7391831815026906062L,
        8483126874968724489L,
        5557012499729359067L,
        4450718684927895135L,
        45335272732612289L,
        -3785965163879210184L,
        -1898242962714602224L,
        -3364618253842484328L,
        7668403852309119835L,
        2092013133434607977L,
        -1792300051264582572L,
        4204792673868607151L,
        4506602674596874571L,
        -2561418149393223402L,
        7840286404246905129L,
        -1035302472383225621L,
        2052650440950159550L,
        3385198385403224840L,
        7801853565618136124L,
        8158750483397835365L,
        -7255481277968854565L,
        -9050796656268415729L,
        7872874903061363846L,
        -6332810502682885990L,
        4195093936537787159L,
        4140384146136775979L,
        -3176676578208440523L,
        -23527475436056846L,
        4821243657012565340L,
        2886979330017289487L,
        7170512846071359835L,
        -6693771254646812923L,
        2266839597848142710L,
        3688056798561584424L,
        7956035795239686169L,
        4088975310233216058L,
        -8662929922277559505L,
        4700022330330092123L,
        1044087464966463501L,
        -3346284225769510392L,
        -1166910579445681945L,
        3872703144237011548L,
        8501175525170010672L,
        -6207437985662953078L,
        -8733361112153680184L,
        -3983180467171621870L,
        2283374194446411819L,
        -6768484891471740518L,
        8044328097415285480L,
        1443377185537854020L,
        6803666844639402915L,
        8720154422929864332L,
        -2537061102409854144L,
        -515858108659325765L,
        -1158565680316859334L,
        -663545770006278500L,
        5112621109506791791L,
        -3092170124310912387L,
        7889395149687448634L,
        3388633789092670761L,
        -4176247842082877688L,
        8523663650288415701L,
        8461829646589019728L,
        4476120923918733118L,
        4955138021944824086L,
        -8201820083387949902L,
        -5150243375844302061L,
        -6574687189541337134L,
        1813511165037620728L,
        -6609152628982158385L,
        8442952354678524497L,
        -7676351795757159272L,
        -8444140555968619192L,
        -6601786601773499005L,
        2179080756673506193L,
        -3666129723434408178L,
        -6776769795366302107L,
        4171664079486791081L,
        -5452069571377540094L,
        359346427326135662L,
        2943062004262958454L,
        -3921968176415799286L,
        -134281347921607697L,
        -8484249901958594015L,
        2812222074991563409L,
        6633639557063290973L,
        -592722373574704367L,
        3584411287925175652L,
        354153167171955028L,
        5447276746665911196L,
        -8076348065615557008L,
        7731333241037517938L,
        3253442384900678998L,
        -5522359985224379236L,
        -6208482024641614158L,
        -7364261433707360458L,
        -5906718475206754288L,
        -2204545928435159171L,
        -2795996564005833532L,
        2349222489800990019L,
        -2358167389589298636L,
        -1617861920532466248L,
        -5097493153019151553L,
        898922054995315500L,
        3869670625351897503L,
        -6636810950712802069L,
        5490098271052481169L,
        -6176774370284978063L,
        6938938509865848385L,
        -4161311926638539187L,
        3014272433254839403L,
        9058504699799497601L,
        8524360852674201045L,
        -740764664775712722L,
        -5679661123465313250L,
        -5211931178887212388L,
        -7017041889364832492L,
        -3265178850476174256L,
        -1499900928604101474L,
        -4067493147979900667L,
        7299368378152484612L,
        -7198659177748600436L,
        -2979171190660530337L,
        -2762966740484030759L,
        -7465049739128224935L,
        3612078396397763590L,
        266194042468197276L,
        5473972901094176230L,
        1189281358884994281L,
        -1442205020880436346L,
        2879820564038232304L,
        43850317677405067L,
        -4454333694153391476L,
        2645494799086526410L,
        3524717291729262494L,
        -1894484565386325644L,
        4470670853232773914L,
        3053558524768124235L,
        -6378696765233153672L,
        1358648698333278216L,
        8016007574038246972L,
        1967787619451912192L,
        -7471676932864790027L,
        8977236026465107675L,
        -2387834721762557666L,
        3231705025344572693L,
        -4855075972961874506L,
        -4885183281004063488L,
        8097441972752472290L,
        -5620463229031782622L,
        7574868212737343521L,
        8681941269840717726L,
        -3486423124456001000L,
        5744244643650494004L,
        1014205046998613439L,
        -3068068226567078353L,
        -6908549673521465879L,
        -1963051143946794321L,
        -7035572219116690072L,
        1540941112525663170L,
        -6001520532777183018L,
        -6097551378241760053L,
        2960057374064581400L,
        3321150298365188778L,
        6355960073926449062L,
        -7405638803189110774L,
        3687349663678072492L,
        7457820208992039828L,
        4506866448636890209L,
        -4654784871604524478L,
        -6973401381709164081L,
        3047431536639897259L,
        3083474008161625734L,
        7390801469345280746L,
        -8119102525062060290L,
        -2941186586599229109L,
        6543095150723391014L,
        1289924509787893294L
    };
}
